3.8K Star,旷视开源的深度学习底层框架
整理 | 叶子
一、软件介绍
MegEngine(天元)是一个快速,可扩展,易于使用且支持自动求导的深度学习框架,中文名为“天元”,是旷视 AI 战略的重要组成部分,负责 AI 三要素(算法,算力,数据)中的“算法”。
二、项目地址
三、特点
一是“训练推理一体”。MegEngine 支持多种硬件平台( CPU,GPU,ARM )。不同硬件上的推理框架和 MegEngine 的训练框架无缝衔接。部署时无需做额外的模型转换,速度/精度和训练保持一致,有效解决了 AI 落地中“部署环境和训练环境不同,部署难”的问题。
二是“动静合一”。动态图易调试,静态图好部署。鱼和熊掌如何兼得,是现代深度学习框架的核心诉求。MegEngine 在静态图的基础上,逐渐加入支持完整动态图的功能。在动态模式下加速研发过程,无需改变模型代码一键切换至静态模式下的部署,为科研和算法工程师同时提供便利。
三是“兼容并包”。MegEngine 的顶层 API 基于 Python,采取了类似于 PyTorch 的风格。简单直接,易于上手,便于现有项目进行移植或整合。为更好地帮助学习实践,MegEngine 同时提供了“开箱即用”的在线深度学习工具 MegStudio ,和汇聚了顶尖算法和模型的预训练模型集合 Model Hub 。
四是“灵活高效”。MegEngine 底层的高性能算子库对于不同的硬件架构进行了深度适配和优化,并提供高效的亚线性内存优化策略,对于生产环境繁多的计算设备提供了极致的性能保证。高效易用的分布式训练实现能有效支持富有弹性的大规模训练。
四、安装
注意: MegEngine 现在仅支持 Linux 平台安装,以及 Python3.5 及以上的版本(不支持 Python2 )。对于 Windows 10 用户,可以通过安装 WSL(Windows Subsystem for Linux) 进行体验。
通过 pip 安装的命令如下:
环境依赖
大多数编译 MegEngine 的依赖位于 third_party
目录,可以通过以下命令自动安装:
$ ./third_party/install-mkl.sh
但是有一些依赖需要手动安装:
CUDA(>=10.1), cuDNN(>=7.6) ,如果需要编译支持 CUDA 的版本(默认开启)
TensorRT(>=5.1.5) ,如果需要编译支持 TensorRT 的版本(默认开启)
LLVM/Clang(>=6.0) ,如果需要编译支持 Halide JIT 的版本(默认开启)
Python(>=3.5), Numpy, SWIG(>=3.0) ,如果需要编译生成 Python 模块(默认开启)
开始编译
MegEngine 遵循“源外构建”(Out-of-Source Build)原则,并且使用静态编译方式。编译的具体流程如下:
1、创建用于编译的目录:
mkdir -p buildcd build
2、使用 CMake
生成编译配置:
生成支持 CUDA 环境的配置:
cmake .. -DMGE_WITH_TEST=ON生成仅支持 CPU 环境的配置,使用 -DMGE_WITH_CUDA=OFF
选项:
生成仅用于 C++ 环境部署的配置,使用 -DMGE_INFERENCE_ONLY=ON
,并可用 -DMGE_WITH_TEST=OFF
关闭测试:
可以使用 -DCMAKE_INSTALL_PREFIX=YOUR_PATH
指定具体安装目录。
开始编译:
make -j$(nproc) [可选] 如果需要用于部署,可以安装 MegEngine 的 C++ 库:
make install
以下是其它常用编译选项:
MGE_ARCH
指定编译的目标平台(默认自动检测当前平台)MGE_WITH_DISTRIBUTED
是否开启多机分布式支持(默认开启)MGE_WITH_PYTHON_MODULE
是否编译生成 Python 模块(默认开启)MGE_BLAS
选择 BLAS 的后端实现,可以是MKL
或OpenBLAS
(默认MKL
)MGE_CUDA_GENCODE
指定提供给nvcc
的-gencode
选项(默认不指定)MGE_DISABLE_FLOAT16
是否不提供float16
类型支持(默认关闭)MGE_ENABLE_EXCEPTIONS
是否开启 C++ 报错支持(默认开启)MGE_ENABLE_LOGGING
是否开启 MegEngine 日志信息(默认自动检测)
更多选项可以通过以下命令查看:
cd buildcmake -LAH .. 2>/dev/null| grep -B 1 'MGE_' | less
参考资料:
https://my.oschina.net/u/2306127/blog/4410032
往期推荐
2021-03-30
2021-03-29
2021-03-26
扫码关注最新动态
公众号ID:fosslab
我就知道你“在看”